﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CLab.Base;
using System.Collections;
using System.Data;
using CLab.Common.Objects;
using CLab.Common.Constantes;

namespace CLab.PagAdminLab
{
    public partial class CatEstudiosRegistro : PageBase
    {
        #region Eventos

        protected void Page_Init(object sender, EventArgs e)
        {
            IdItem = 6;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!Page.IsPostBack)
                {
                    PreparaPagina();
                    if (ViewParametros.Count > 0)
                    {
                        object idEstudio = ViewParametros.Find(delegate(Parametro p) { return p.Nombre == "IdEstudio"; }).Valor;
                        ObtenInfo(idEstudio);
                    }
                }
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SetFocus(txtNombreEstudio.ControlTextBox.ClientID);
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                EstudioServiceReference.EstudioServiceClient servicio = new EstudioServiceReference.EstudioServiceClient();
                EstudioServiceReference.Estudio est = new EstudioServiceReference.Estudio();
                est.IdLaboratorio = SessionLaboratorio.IdLaboratorio;
                est.NombreEstudio = txtNombreEstudio.Text;
                est.Precio = Convert.ToDecimal(txtPrecio.Text);
                est.IpMod = Request.UserHostAddress;
                est.IdUsuarioMod = SessionUsuario.IdUsuario;
                est.IdEstudio = CLab.Common.Util.Convert.ToNInt(hdnIdEstudio.Value);
                hdnIdEstudio.Value = servicio.RegistraEstudio(est).ToString();
                Master.alertExito();
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Nuevo();
        }
        #endregion

        #region Metodos
        private void PreparaPagina()
        {
            txtNombreEstudio.EnabledValidator = true;
            txtNombreEstudio.MaxLength = 1000;
            txtPrecio.EnabledValidator = true;
            txtPrecio.MaxLength = 18;
            txtPrecio.EnabledFiltered = true;
            txtPrecio.FilterType = AjaxControlToolkit.FilterTypes.Numbers;
            txtPrecio.ValidChars = ".";
            Master.TituloPagina = "Registrar estudio";
        }

        private void Nuevo()
        {
            txtNombreEstudio.Text = "";
            txtPrecio.Text = "";
            hdnIdEstudio.Value = "";
            SetFocus(txtNombreEstudio.ControlTextBox.ClientID);
        }

        private void ObtenInfo(object idEstudio)
        {
            ArrayList parametros = new ArrayList();
            ConsultaServiceReference.ConsultaServiceClient servicio = new ConsultaServiceReference.ConsultaServiceClient();
            //Parametros
            parametros.Add(CreaParametroConsulta("@psNombreEstudio", null, ConsultaServiceReference.Parameter.vEnumType.VarChar));
            parametros.Add(CreaParametroConsulta("@pnIdEstudio", CLab.Common.Util.Convert.ToNInt(idEstudio), ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta("@pnIdLaboratorio", CLab.Common.Util.Convert.ToNInt(SessionLaboratorio.IdLaboratorio), ConsultaServiceReference.Parameter.vEnumType.Int));
            ConsultaServiceReference.Parameter[] prms = new ConsultaServiceReference.Parameter[parametros.Count];
            parametros.CopyTo(prms);
            //Ejecuta conulta
            DataSet ds = servicio.EjecutaConsultaConParametros("spObtenEstudios", prms);
            txtNombreEstudio.Text = ds.Tables[0].Rows[0][Columnas.NombreEstudio].ToString();
            txtPrecio.Text = ds.Tables[0].Rows[0][Columnas.Precio].ToString();
            hdnIdEstudio.Value = idEstudio.ToString();
        }
        #endregion
    }
}